package com.hd.boot0407.service;

import com.github.pagehelper.PageInfo;
import com.hd.boot0407.entity.User;
import com.hd.boot0407.vo.UserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


public interface UserService {
    public User getById(Integer id);
    public User getByName(@Param("name")String name);
    public int DeleteById(@Param("id")Integer id);
    public int DeleteByIdArr(@Param("array")Integer[] id);
    /*主键自增长的插入User*/
    Integer addAutoIdUser(User user);
    /*更新数据 sql*/
    Integer updateUser(User user);

    PageInfo<User> selectAll(int pageNum, int pageSize);
    User login(String username, String password);
    public void regist(UserVo userVo) throws Exception;
    /**
     * 随机抽取一个用户，返回用户名
     * @param fair
     * @return
     */
    String draw(boolean fair);

    /**
     * 重置中奖状态
     */
    void reset();

    /**
     * 基于缓存进行抽奖
     * @param fair
     * @return
     */
    String cacheDraw(boolean fair);
    Integer getTotalCount();

    /**
     * 分页查询
     * @param page   当前页
     * @param limit  页大小
     * @return
     */
    List<User> getallByPage(Integer page, Integer limit);

    /**
     * 使用分页插件的分页查询
     * @param page
     * @param limit
     * @return
     */
    PageInfo<User> getallByPageHelpler(Integer page, Integer limit);

    /**
     * 带有条件的分页查询
     * @param page
     * @param limit
     * @param username
     * @param sex
     * @param birthday
     * @return
     */
    PageInfo<User> getallByPageHelpler(Integer page, Integer limit, String username, String sex, Date birthday);
    /*作业添加用户User*/
    Integer addUser(User user);
    /*到处指定的user到*/
    String export() throws IOException;
    void batchInsert(MultipartFile file) throws IOException, Exception;
    /*根据文件名查询*/

    /**
     *
     * @param FileName
     * @return
     */
    ArrayList<User> getByFileName(@Param("FileName")String FileName);
}
